package com.tensquare.friend.service;

import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.entity.Friend;
import com.tensquare.friend.entity.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.List;

@Service
public class FriendService {
    @Autowired
    private FriendDao friendDao;
    @Autowired
    private NoFriendDao noFriendDao;
    @Autowired
    private UserClient userClient;

    @Transactional
    public int addFriend(String userid,String friendid){
        if (friendDao.selectCount(userid,friendid)>0)
        {
            return 0;
        }
        Friend friend = new Friend();
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        friendDao.save(friend);
        if (friendDao.selectCount(friendid,userid)>0){
            friendDao.updateLike("1",userid,friendid);
            friendDao.updateLike("1",friendid,userid);
        }
        userClient.incFollowcount(userid,1);//增加自己的关注数
        userClient.incFanscount(friendid,1);//增加对方的粉丝数
        return 1;
    }
    @Transactional
    public void addNoFriend(String userid,String friendid)
    {
        NoFriend noFriend = new NoFriend();
        noFriend.setFriendid(friendid);
        noFriend.setUserid(userid);
        noFriendDao.save(noFriend);
        userClient.incFollowcount(userid,-1);//减少自己的关注数
        userClient.incFanscount(friendid,-1);//减少对方的粉丝数
        Friend friend = friendDao.findByUseridAndFriendid(userid, friendid);
        //如果当前数据islike状态为1，应改变对应另一条数据状态为0
        if(friend.getIslike()=="1" && "1".equals(friend.getIslike())){
            friendDao.updateLike("0",friendid,userid);
        }
        friendDao.deleteFriend(userid,friendid);
    }
    /**
     * 删除好友
     * @param userid
     * @param friendid
     */
    @Transactional
    public void deleteFriend(String userid,String friendid){
        friendDao.deleteFriend(userid,friendid);
        friendDao.updateLike(friendid,userid,"0");
        addNoFriend(userid,friendid);//向不喜欢表中添加记录
        userClient.incFollowcount(userid,-1);//减少自己的关注数
        userClient.incFanscount(friendid,-1);//减少对方的粉丝数
    }

    public List<Friend> findByUserid(String userid){
        return friendDao.findByUserid(userid);
    }
}
